package br.com.rumus.dao.seguranca;

import java.util.List;

import javax.persistence.Query;
import br.com.rumus.dao.DAOGenerico;
import br.com.rumus.dominio.seguranca.Perfil;

public class PerfilDAO extends DAOGenerico<Perfil, Long>{

	@SuppressWarnings("unchecked")
	public List<Perfil> pesquisar( Perfil perfil, int registro, int quantidade ){
		StringBuilder JPQL = new StringBuilder( "select p from Perfil p where ( p.descricao like :descricao or :descricao is null )" );
		Query query = getEntityManager().createQuery(JPQL.toString());
		query.setParameter("descricao",(perfil!=null&&perfil.getDescricao()!=null&&!perfil.getDescricao().equals(""))?perfil.getDescricao():null);
		query.setFirstResult(registro);
		query.setMaxResults(quantidade);
		return query.getResultList();
	}

	public int pesquisar( Perfil perfil ){
		StringBuilder JPQL = new StringBuilder( "select count(*) from Perfil p where ( p.descricao like :descricao or :descricao is null )" );
		Query query = getEntityManager().createQuery(JPQL.toString());
		query.setParameter("descricao",(perfil!=null&&perfil.getDescricao()!=null&&!perfil.getDescricao().equals(""))?perfil.getDescricao():null);
        Number registros = null;
        registros = (Number) query.getSingleResult();
        return registros == null ? 0 : registros.intValue();
	}
	
}